
/**
 * 游戏录制管理器
 */
export default class RecordManager {
  constructor() {
    console.log('初始化录制管理器');
    // 检查是否支持录制功能
    if (!wx.createGameRecorder) {
      console.error('当前环境不支持游戏录制功能');
      return;
    }

    // 初始化录制器
    this.gameRecorder = wx.createGameRecorder({
      duration: 20,  // 录制时长20秒
      fps: 24       // 帧率
    });

    this.isRecording = false;
    this.recordStartTime = 0;

    console.log('录制管理器初始化完成');
    
    // 监听录制状态
    this.gameRecorder.onStart(() => {
      console.log('录制开始');
      this.isRecording = true;
      this.recordStartTime = Date.now();
      
      wx.showToast({
        title: '开始录制',
        icon: 'none',
        duration: 2000
      });
    });

    this.gameRecorder.onStop((res) => {
      console.log('录制结束');
      this.isRecording = false;
      
      if (res.videoPath) {
        console.log('录制文件已保存:', res.videoPath);
        wx.showToast({
          title: '录制已完成',
          icon: 'success',
          duration: 2000
        });
      }
    });

    this.gameRecorder.onError((err) => {
      console.error('录制错误:', err);
      this.isRecording = false;
      
      wx.showToast({
        title: '录制失败',
        icon: 'none',
        duration: 2000
      });
    });
  }

  /**
   * 开始录制
   */
  startRecording() {
    if (!this.isRecording) {
      this.gameRecorder.start({
        duration: 20
      }).catch(err => {
        console.error('开始录制失败:', err);
        wx.showToast({
          title: '开始录制失败',
          icon: 'none',
          duration: 2000
        });
      });
    }
  }

  /**
   * 停止录制
   */
  stopRecording() {
    if (this.isRecording) {
      this.gameRecorder.stop().catch(err => {
        console.error('停止录制失败:', err);
        wx.showToast({
          title: '停止录制失败',
          icon: 'none',
          duration: 2000
        });
      });
    }
  }

  /**
   * 检查是否需要停止录制
   */
  checkRecordingTime() {
    if (this.isRecording && Date.now() - this.recordStartTime >= 20000) {
      this.stopRecording();
    }
  }

  /**
   * 更新录制状态
   */
  update() {
    this.checkRecordingTime();
  }
}